home *** CD-ROM | disk | FTP | other *** search
-
- brightanim:
-
- move.l branimpt,a0
- move.w (a0),d0
- move.w d0,ZoneDat24+6
- sub.w #10,d0
- asr.w #1,d0
- add.w #10,d0
- move.w d0,ZoneDat23+6
- move.w d0,ZoneDat23+6
-
- sub.w #1,branimcount
- bgt.s nonextbr
- adda.w #4,a0
- cmp.l #endbranim,a0
- blt.s notrestartbr
- move.l #branim,a0
- notrestartbr
- move.l a0,branimpt
- move.w 2(a0),branimcount
- nonextbr:
-
- rts
-
- branimpt: dc.l branim
- branimcount: dc.w 0
-
- branim:
- dc.w 10,1
- dc.w -15,1
- dc.w 10,3
- dc.w -15,1
- dc.w 10,4
- dc.w -15,1
- dc.w 10,1
- dc.w -15,2
- dc.w 10,2
- dc.w -8,1
- dc.w 10,1
- dc.w -5,1
- dc.w 10,2
- dc.w -15,1
- dc.w 10,2
-
- endbranim
-
- objvels: ds.l 8
-
- PlayerZone: dc.w 0
-
- objmoveanim:
-
- move.l Roompt,a0
- move.w (a0),PlayerZone
-
- ; bsr brightanim
- bsr PlayerShot
- ; bsr Nasties
- ; bsr CheckPickups
- bsr ObjectHandler
- rts
-
- GotBigGun: dc.w 0
-
- GunDamage:
- dc.w 0
-
- rotcount:
- dc.w 0
-
- shotvels: ds.l 20
-
- clicked: dc.w 0
- popping: ds.l 5*4
-
- GunNoise: dc.w 1
-
- PlayerShot:
-
- tst.b clicked
- bne pressedfire
-
- rts
-
- tempangpos: dc.w 0
-
- pressedfire:
-
- move.w angpos,tempangpos
- move.w #0,d7
- move.w #256,d6
- move.w #256,d5
-
- firefive:
-
- move.l #PlayerShotData,a0
- move.w #19,d1
- findonefree
- move.w 12(a0),d0
- blt.s foundonefree
- adda.w #32,a0
- dbra d1,findonefree
-
- rts
-
- foundonefree:
-
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w GunNoise,Samplenum
- move.b #2,chanpick
- clr.b notifplaying
- move.b GotBigGun,shotsize(a0)
- move.b GunDamage,shotpower(a0)
- movem.l a0/d5/d6/d7,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/d5/d6/d7
-
- move.l #ObjectPoints,a1
- move.w (a0),d1
- lea (a1,d1.w*4),a1
- move.w xoff,(a1)
- move.w zoff,2(a1)
- move.w tempangpos,d0
- and.w #8191,d0
- move.l #SineTable,a2
- adda.w d0,a2
- move.w (a2),d0
- ext.l d0
- asl.l #7,d0
- swap d0
- move.w d0,shotxvel(a0)
- move.w 2048(a2),d0
- ext.l d0
- asl.l #7,d0
- swap d0
- move.w d0,shotzvel(a0)
- move.l Roompt,a2
- move.w (a2),12(a0)
- move.l 2(a2),d0
- asr.l #7,d0
- add.w #50,d0
- move.w d0,4(a0)
-
- add.w d6,tempangpos
- neg.w d6
- neg.w d5
- add.w d5,d6
-
- dbra d7,firefive
-
- rts
-
- duh: dc.w 0
- double: dc.w 0
- ivescreamed: dc.w 0
-
- ObjectHandler:
-
- move.l #ObjectData,a0
- Objectloop:
- tst.w (a0)
- blt.s doneallobj
-
- cmp.b #0,16(a0)
- bne.s notnasty
- bsr ItsANasty
- notnasty:
- cmp.b #1,16(a0)
- bne.s notmedi
- bsr ItsAMediKit
- notmedi:
- cmp.b #2,16(a0)
- bne.s notbullet
- bsr ItsABullet
- notbullet:
- cmp.b #3,16(a0)
- bne.s notbiggun
- bsr ItsABigGun
- notbiggun:
-
- adda.w #32,a0
- bra Objectloop
-
- doneallobj:
-
-
- ItsANasty:
-
- tst.b 17(a0)
- beq NasType1
- rts
-
- NasType1:
-
- tst.w 12(a0)
- blt notthisone
-
- clr.b ivescreamed
- tst.b numlives(a0)
- bgt.s itsaround
- move.b #0,numlives(a0)
- move.w #-1,12(a0)
- bra notthisone
-
- itsaround:
-
- move.w 4(a0),d0
- cmp.w targheight(a0),d0
- beq.s rightheight
- bgt.s goingdown
- add.w #16,d0
- goingdown:
- subq #8,d0
- rightheight:
- move.w d0,4(a0)
-
- move.b damagetaken(a0),d2
- beq.s okrunaround
-
- * I've been shot!
-
- st ivescreamed
-
- sub.b d2,numlives(a0)
- sub.w #20,currspd(a0)
- move.b #0,damagetaken(a0)
-
- okrunaround:
-
- move.w (a0),d0
-
- move.l #ObjectPoints,a1
- lea (a1,d0.w*4),a1
- move.l (a1),oldx
- move.w xoff,newx
- move.w zoff,newz
- move.w currspd(a0),d2
- cmp.w maxspd(a0),d2
- blt.s tooslow
- beq.s notoofast
- subq #6,d2
- tooslow:
- addq #4,d2
- notoofast:
- move.w d2,currspd(a0)
- move.w d2,speed
- move.w #40,Range
- move.w 12(a0),d2
- move.l #ZoneAdds,a5
- move.l (a5,d2.w*4),objroom
- movem.l a0/a1/a3/a4/d7,-(a7)
- jsr HeadTowards
- Jsr MoveObject
- movem.l (a7)+,a0/a1/a3/a4/d7
-
- tst.b GotThere
- beq.s NotEating
-
- movem.l d0-d7/a0-a6,-(a7)
- sub.l #ObjectPoints,a1
- add.l a1,a1
- add.l #ObjRotated,a1
- move.l (a1),Noisex
- move.w #200,Noisevol
- move.w #2,Samplenum
- move.b #3,chanpick
- st notifplaying
- st backbeat
- jsr MakeSomeNoise
- sub.w #1,Energy
- movem.l (a7)+,d0-d7/a0-a6
-
- NotEating:
-
- move.l objroom,a2
-
- tst.b ivescreamed
- bne.s screamanyway
-
- move.w (a2),d0
- cmp.w 12(a0),d0
- beq.s nochangeroom
- move.l #Objects+4096*5,8(a0)
- cmp.l Roompt,a2
- bne.s nochangeroom
-
- move.w #40,currspd(a0)
- screamanyway:
-
- move.l #Objects+4096*6,8(a0)
- movem.l d0-d7/a0-a6,-(a7)
- sub.l #ObjectPoints,a1
- add.l a1,a1
- add.l #ObjRotated,a1
- move.l (a1),Noisex
- move.w #200,Noisevol
- move.w #0,Samplenum
- move.b #1,chanpick
- clr.b notifplaying
- st backbeat
- jsr MakeSomeNoise
- movem.l (a7)+,d0-d7/a0-a6
-
- nochangeroom:
-
- move.w (a2),12(a0)
- move.w 6(a2),2(a0)
- move.l 2(a2),d0
- asr.l #7,d0
- move.w d0,targheight(a0)
-
- move.w (a0),d0
- move.l #ObjectPoints,a1
- move.l newx,(a1,d0.w*4)
- notthisone:
-
- rts
-
- ItsAMediKit:
-
- HealFactor EQU 18
-
- move.w xoff,oldx
- move.w zoff,oldz
- move.w PlayerZone,d7
- cmp.w 12(a0),d7
- bne.s .NotSameZone
- move.w (a0),d0
- move.l #ObjectPoints,a1
- move.l (a1,d0.w*4),newx
- move.l #32*32,d2
- bsr CheckHit
- tst.b hitwall
- beq.s .NotPickedUp
-
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w #4,Samplenum
- move.b #2,chanpick
- clr.b notifplaying
- movem.l a0/a1/d2/d6/d7,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/a1/d2/d6/d7
-
- move.w #-1,12(a0)
- move.w HealFactor(a0),d0
- add.w d0,Energy
-
- .NotPickedUp:
-
- .NotSameZone:
-
- rts
-
- ItsABigGun:
-
- move.w xoff,oldx
- move.w zoff,oldz
- move.w PlayerZone,d7
- cmp.w 12(a0),d7
- bne .NotSameZone
- move.w (a0),d0
- move.l #ObjectPoints,a1
- move.l (a1,d0.w*4),newx
- move.l #32*32,d2
- bsr CheckHit
- tst.b hitwall
- beq.s .NotPickedUp
-
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w #4,Samplenum
- move.b #2,chanpick
- clr.b notifplaying
- movem.l a0/a1/d2/d6/d7,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/a1/d2/d6/d7
-
- move.l #Cheese,FacesPtr
- move.b #5,GunDamage
- st GotBigGun
- move.w #1,GunNoise
-
- move.w #-1,12(a0)
-
- .NotPickedUp:
-
- .NotSameZone:
-
- rts
-
- ItsABullet:
-
-
- tst.b shotsize(a0)
- beq.s ItsASmallBullet
- bra ItsABigBullet
-
- ItsASmallBullet
-
- move.w 12(a0),d0
- blt doneshot
-
- move.w #50*128,6(a0)
-
- move.l #ObjectPoints,a1
- move.w (a0),d1
- lea (a1,d1.w*4),a1
-
- move.l #Objects+4096*11+32,8(a0)
-
- move.w (a1),d2
- move.w d2,oldx
- add.w shotxvel(a0),d2
- move.w d2,newx
- move.w 2(a1),d2
- move.w d2,oldz
- add.w shotzvel(a0),d2
- move.w d2,newz
- move.l #ZoneAdds,a2
- move.l (a2,d0.w*4),objroom
- movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
- jsr MoveObject
- movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
- tst.b hitwall
- beq.s nothitwall
-
- move.w #-1,12(a0)
-
- bra doneshot
-
- rts
-
- nothitwall:
-
- move.l objroom,a3
- move.w (a3),12(a0)
- move.w newx,(a1)
- move.w newz,2(a1)
- ************
- * Check if hit a nasty
-
- move.l (a1),oldx
-
- move.l #ObjectPoints,a1
- move.l #ObjectData,a3
- checkloop:
- tst.w (a3)
- blt checkedall
- tst.w 12(a3)
- blt.s notanasty
- cmp.b #0,16(a3)
- bne.s notanasty
- move.w (a3),d1
- move.l (a1,d1.w*4),newx
- move.l #60*60,d2
- jsr CheckHit
- tst.b hitwall
- beq.s stillgoing
- add.b #1,damagetaken(a3)
- move.w #-1,12(a0)
- bra hitnasty
- stillgoing:
- notanasty:
- add.w #32,a3
- bra checkloop
- hitnasty:
- checkedall:
-
- rts
-
- ItsABigBullet:
-
- move.w 12(a0),d0
- blt doneshot
-
- tst.b shotstatus(a0)
- beq.s notpopping
-
- move.l #Objects+4096*7,a1
- move.b #12,d0
- sub.b shotstatus(a0),d0
- btst #0,d0
- beq.s nobot
- adda.w #32,a1
- nobot:
- asr.b #1,d0
- ext.w d0
- asl.w #6,d0
- asl.w #5,d0
- adda.w d0,a1
- move.l a1,8(a0)
- add.w #128*8,6(a0)
- sub.w #4,4(a0)
-
- sub.b #1,shotstatus(a0)
- bgt.s notdonepop
- move.w #-1,12(a0)
- clr.b shotstatus(a0)
- notdonepop:
-
- bra doneshot
-
- notpopping:
-
- move.w #50*128,6(a0)
-
- move.l #ObjectPoints,a1
- move.w (a0),d1
- lea (a1,d1.w*4),a1
-
- move.w double,d3
- move.w duh,d2
- eor.w #32,d2
- bne.s nonextx
- add.w #64*32,d3
- and.w #64*32*3,d3
- nonextx:
- move.w d2,duh
- move.w d3,double
-
- add.w d2,d3
- move.l #Objects+4096*3,d2
- ext.l d3
- add.l d3,d2
- move.l d2,8(a0)
-
- move.w (a1),d2
- move.w d2,oldx
- add.w shotxvel(a0),d2
- move.w d2,newx
- move.w 2(a1),d2
- move.w d2,oldz
- add.w shotzvel(a0),d2
- move.w d2,newz
- move.l #ZoneAdds,a2
- move.l (a2,d0.w*4),objroom
- movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
- jsr MoveObject
- movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
- tst.b hitwall
- beq.s .nothitwall
-
- move.b #11,shotstatus(a0)
- move.l #Objects+4096*7,8(a0)
-
- bra doneshot
-
- rts
-
- .nothitwall:
-
- move.l objroom,a3
- move.w (a3),12(a0)
- move.w newx,(a1)
- move.w newz,2(a1)
- ************
- * Check if hit a nasty
-
- move.l (a1),oldx
-
- move.l #ObjectData,a3
- move.l #ObjectPoints,a1
-
- .checkloop:
- tst.w (a3)
- blt .checkedall
- tst.w 12(a3)
- blt.s .notanasty
- cmp.b #0,16(a3)
- bne.s .notanasty
- move.w (a3),d1
- move.l (a1,d1.w*4),newx
- move.l #60*60,d2
- jsr CheckHit
- tst.b hitwall
- beq.s .stillgoing
- add.b #5,damagetaken(a3)
- move.b #11,shotstatus(a0)
- move.l #Objects+4096*7,8(a0)
- bra .hitnasty
- .stillgoing:
- .notanasty:
- add.w #32,a3
- dbra d6,.checkloop
- .hitnasty:
- .checkedall
-
- doneshot:
-
- rts
-
- ZoneAdds:
- dc.l ZoneDat0
- dc.l ZoneDat1
- dc.l ZoneDat2
- dc.l ZoneDat3
- dc.l ZoneDat4
- dc.l ZoneDat5
- dc.l ZoneDat6
- dc.l ZoneDat7
- dc.l ZoneDat8
- dc.l ZoneDat9
- dc.l ZoneDat10
- dc.l ZoneDat11
- dc.l ZoneDat12
- dc.l ZoneDat13
- dc.l ZoneDat14
- dc.l ZoneDat15
- dc.l ZoneDat16
- dc.l ZoneDat17
- dc.l ZoneDat18
- dc.l ZoneDat19
- dc.l ZoneDat20
- dc.l ZoneDat21
- dc.l ZoneDat22
- dc.l ZoneDat23
- dc.l ZoneDat24
- dc.l ZoneDat25
- dc.l ZoneDat26
- dc.l ZoneDat27
- dc.l ZoneDat28
- dc.l ZoneDat29
-
- putinbackdrop:
-
- move.w angpos,d5
- and.w #8191,d5
- muls #432,d5
- divs #8192,d5
- muls #160,d5
-
- CACHE_ON d1
-
- move.l frompt,a0
- adda.w #104*4,a0
- move.l #BackPicture,a1
- add.l d5,a1
- move.w #104*4,d1
- move.w #2,d4
- allbars:
- move.w #31,d3
- onebar:
- move.w #1,d0
- move.l a0,a2
- vertline:
- REPT 20
- move.w (a1)+,(a2)
- adda.w d1,a2
- ENDR
- dbra d0,vertline
-
- adda.w #80,a1
-
- cmp.l #EndBackPicture,a1
- blt.s notoffrightend
- move.l #BackPicture,a1
- notoffrightend
-
- addq #4,a0
- dbra d3,onebar
- addq #4,a0
- dbra d4,allbars
- rts
-